home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / dmenu168.zip / DOUGMENU.DOC < prev    next >
Text File  |  1992-08-18  |  33KB  |  697 lines

  1. Version 1.68 fixes a bug concerning the use of batch file text
  2. that begins with an enviroment variable.  Otherwise it is the same as 
  3. 1.67.       Douglas Bell - August 18, 1992
  4.  
  5.  
  6.       TERMS OF USE for DougMenu v1.67, released on July 31, 1992
  7.                      Revised August 2, 1992
  8.  
  9. This program is a freeware product and so should be distributed at
  10. no charge, besides that of a reasonable media fee, if applicable. 
  11.  
  12. No charge should ever be made for the program itself, or any
  13. program using source code from this program.
  14.  
  15. While users are free to modify DougMenu for their own use, modified
  16. versions of DougMenu are not to be distributed out side of the
  17. business or organization which created or commissioned them.  The
  18. DougMenu package should always be distributed complete with source
  19. and unaltered except when being installed for use at multiple sites
  20. within a business or organization.  Then it is permitted to install
  21. only the files deemed necessary to use the menu system as long as
  22. one complete copy is maintained by the business or organization.
  23.  
  24. If you have suggestion concerning the further development of
  25. DougMenu, please contact the author concerning any changes you
  26. suggest to the official version.
  27.  
  28. A copy of the most recent version of DougMenu can be mailed to you
  29. for US $10.  Printed Documentation is available for US $25.  US $5
  30. surcharge for postage outside North America.  One year of customer
  31. support via electronic mail is available for US $35.
  32.  
  33. Send requests, comments, or orders to:
  34.  
  35. Douglas A. Bell
  36. 2585 Euclid Heights Blvd., APT #1
  37. Cleveland, Ohio   44106
  38. USA
  39.  
  40. -or-
  41.  
  42. dab6@po.cwru.edu
  43.  
  44.  
  45. THERE IS NO WARRANTY, EXPRESSED OR IMPLIED, FOR DOUGMENU.  WHILE
  46. THE AUTHOR HAS ATTEMPTED TO PRODUCE AN ERROR FREE PROGRAM, THE
  47. AUTHOR ASSUMES NO RESPONSIBILITY FOR ANY DAMAGE THAT THIS PROGRAM
  48. MIGHT CAUSE.
  49.  
  50. (c) Copyright 1992
  51.  
  52. The Author:
  53.  
  54. Douglas Bell is recently graduated from Case Western Reserve
  55. University with a Bachelors degree in the Science of Mathematics. 
  56. He could not believe how awful the Novell Menu system was when he
  57. was confronted with it and felt it was necessary to write something
  58. better.  He is currently employed by the Case Western as a minor
  59. functionary in the cogs of a large bureaucracy.  They do not pay
  60. him for this product.
  61.  
  62.  
  63. -----------------------------------------------------------------
  64.  
  65. Thanks and acknowledgements to the following for their assistance:
  66.  
  67. Bas Schellevis for providing the added Novell support in v1.67,
  68. Alan Zeh who will do anything for a beer,
  69. Mark Alisop who provided helpful suggestions,
  70. Jeff Goodin & Glenn Crocker of CWRU Smith Lab,
  71. Stephen Trier of CWRU Information Network Services,
  72. Tom Barton and Ken Emery for showing me how to logout of a novell
  73. server,
  74. Everyone who has helped me by reporting bugs and offering
  75.    suggestions,
  76. And all the authors of the freeware programs on the internet
  77.   whose code provided many programming tricks and examples.
  78.  
  79.  
  80.                  DOUGMENU v1.67 DOCUMENTATION
  81.  
  82.  
  83. This document assumes a certain degree of familiarity with PC-DOS
  84. based computing.  It is more intended as a reference for a PC
  85. administrator instead of a neophyte user.
  86.  
  87.  
  88. WHAT IS DOUGMENU?
  89.  
  90.      DougMenu is intended for use as a stand alone menuing system
  91.      or as a client interface for a PC network using IBM pc
  92.      compatible computers.
  93.  
  94.      DougMenu requires 40k of disk space, 256k free memory, and Dos
  95.      version 3.3 compatibility.
  96.  
  97.  
  98. FEATURES:
  99.  
  100.      No memory overhead when launching applications.
  101.      Programmable function keys and hidden 'hot' keys.
  102.      Reads Novel menus scripts with little or no modification.
  103.      Built-in screen saver that won't conflict with TSR programs.
  104.      Can run TSR programs.
  105.      Controlled exiting.
  106.      Security features.
  107.      Full mouse support.
  108.      User input capabilities.
  109.      Support for novell networks.
  110.      Minimal batch file litter.
  111.      Easily customized colors and layouts.
  112.      Small.
  113.      Fast.
  114.      Free!
  115.  
  116.  
  117. HOW IT WORKS:
  118.  
  119.      DougMenu requires the use of 3 files:  DOUGMENU.EXE, DMENU.BAT
  120.      and a menu script.  After DougMenu is configured for your
  121.      system and a menu script has been created, type the following
  122.      to start the menu program:
  123.  
  124.      [DRIVE:][PATH] DMENU DRIVE:\[PATH]\MENUSCRIPT[.MNU]
  125.  
  126.      The parameter after DMENU is the path and the name of the menu
  127.      script.  If DougMenu cannot find your menu script, it will add
  128.      ".MNU" to the end of the file name and look for that file.
  129.      Although the .MNU extension is not required, it may be helpful
  130.      for organizing files.
  131.  
  132.      The DMENU.BAT file runs the DougMenu executable.  The
  133.      executable reads in the menu script and uses the script to
  134.      display menus and such.  When an action is selected that
  135.      requires leaving the menu system, the executable makes a
  136.      temporary batch file according to the t environment variable. 
  137.      Once the file is made, DOUGMENU.EXE terminates and returns an
  138.      errorlevel to the DMENU.BAT batch file.  The errorlevel
  139.      determines how to use the temporary batch is invoked, or if to
  140.      exit without using it.  If the temporary batch file is going
  141.      to return to the menu program, the temporary batch file is
  142.      invoked with the "call" command which is only found in dos 3.3
  143.      and higher to force the return.
  144.  
  145.  
  146. INSTALLING DOUGMENU:
  147.  
  148.      To install DougMenu, make a directory on a computers fixed
  149.      disk or on a file server and copy the files found in the
  150.      DougMenu distribution zip file into that directory.
  151.      It is permitted to install DougMenu in a minimal operational
  152.      configuration within a business or organization.  See the
  153.      beginning of this document for details.
  154.  
  155. CONFIGURING DOUG MENU:
  156.  
  157.      To configure DougMenu, two lines need to be edited in the file
  158.      named DMENU.BAT.
  159.           Listing of DMENU.BAT:
  160.                @echo off
  161.           *    set t=C:\temp.fil
  162.                :loop
  163.           **   C:\MENU\DOUGMENU.EXE %1  
  164.                if errorlevel = 2 %t%
  165.                if errorlevel = 1 goto quit 
  166.                call %t%
  167.                goto loop
  168.                :quit
  169.                set t=
  170.  
  171.      *    -- When DougMenu is run, it will create a small temporary
  172.      batch file called temp.bat.  The t environment variable
  173.      determines the name and path of the temporary batch file. The
  174.      name of the temporary file name should end ".fil" .  If you
  175.      want to put the temporary files on a networked drive, read the
  176.      section concerning network customization in the Hints and Tips
  177.      section.  Also, putting spaces between the 't' and the '=' can
  178.      cause problems with some versions of DOS.  So don't use "t =
  179.      c:\temp.fil", use "set t=c:\temp.fil" instead.
  180.      **   -- This line should be set to the location of
  181.      DOUGMENU.EXE on your hard drive or networked drive.
  182.  
  183. SUGGESTIONS FOR CUSTOMIZATION OF DMENU.BAT:
  184.      Keep in mind that DMENU.BAT is only a batch file, and can be
  185.      edited into many different working configurations.  Feel free
  186.      to add anything to it which will help your system.  But be
  187.      careful; it is not a good idea to place commands after the
  188.      dougmenu.exe line and before the "if errorlevel" lines because
  189.      this could change the errorlevel settings before the "if
  190.      errorlevel" statements can read it.
  191.  
  192.      If you want to make sure that the user was returned to a
  193.      specific directory after returning from any application, a
  194.      change directory command can be placed after the loop label in
  195.      the DMENU.BAT file.
  196.  
  197.      If you want to broadcast a message when the menu system is
  198.      first started, you can put a dos "type" command followed by a
  199.      "pause" command at the beginning of the DMENU.BAT file to do
  200.      this.
  201. HOW TO WRITE MENU SCRIPTS:
  202.  
  203.      The basic unit of a DougMenu script is the menu structure.  It
  204.      is used to create menu windows when a script is splayed by
  205.      DougMenu.  A menu structure begins with a line whose first
  206.      character is '%'.  Any text after the '%' and before a comma
  207.      or the end of the line is used as the title of the particular
  208.      menu.  The following line would be used to create a menu
  209.      called "My First Menu".
  210.  
  211.      %My First Menu
  212.  
  213.      Non-indented lines which follow the menu title will be
  214.      displayed as visible options in the particular menu.  Indented
  215.      text can be placed after the option names and these lines will
  216.      determine what will happen if the option that they follow is
  217.      chosen.  The lines of indented executable text are normally
  218.      placed into a temporary batch file and then run.  The
  219.      following sample of a menu script illustrates a simple menu
  220.      structure complete will options and actions.
  221.  
  222.      %My First Menu
  223.      My First Option
  224.        echo The first option was chosen
  225.        pause
  226.      Subtitle Option
  227.      Wordperfect
  228.        c:
  229.        cd wp51
  230.        wp.exe
  231.  
  232.      Notice that the second option is not followed by any text. 
  233.      When this is the case, the option will not be selectable and
  234.      the its name will be displayed as a subtitle in the menu
  235.      window when it the menu structure is displayed.
  236.  
  237.      When a script is started, the first menu structure in the
  238.      script will be automatically displayed.  To open more menu
  239.      structures from the first, the executable text of an option
  240.      should contain the name of the menu to be opened after an
  241.      indented '%'.  This is demonstrated below.
  242.  
  243.      %The first menu
  244.      Launch a new menu
  245.        %another menu
  246.      Another Option
  247.        its executable text
  248.  
  249.      %Another Menu
  250.      Its Items
  251.        Executable batch file stuff for them.
  252.  
  253.      This method of opening menu windows can be recursed and/or
  254.      nested up to 10 levels deep.
  255.  
  256. HINTS AND TIPS:
  257.  
  258. Networking Hazards:
  259.      Temporary Batch files:
  260.           The best thing to do is put the temporary batch files on
  261.           local hard drives or ram drives.  If the temporary files
  262.           are to be placed in a common directory on a networked
  263.           drive, numerous temporary files can coexist if they are
  264.           named according to the connection number, network
  265.           address, or user name.  This can be done by placing the
  266.           distinguishing value into an environment variable, say
  267.           %connection%, when logging into the server and then use
  268.           that variable to define the temporary batch file in
  269.           DMENU.BAT, like this:
  270.  
  271.                set temp=u:\temp\%connection%.fil 
  272.           
  273.      Logging out of a server from inside the menu:
  274.           If the temporary batch files are on a local drive and
  275.           DMENU.BAT is on a networked drive: 
  276.                1)   Use "#logout" followed by "#exit" or
  277.                     "#reboot".
  278.                2)   Use a batch file which logs the user out of
  279.                     the server, but end the option's executable
  280.                     text with "#exit".
  281.                3)   Put DMENU.BAT on some network drive that is
  282.                     visible when not logged into the server, such
  283.                     as the \LOGIN directory.
  284.           If both the temporary batch files and DMENU.BAT are on
  285.           networked drives:
  286.                1)   Use "#logout" followed by "#reboot".
  287.                2)   Put DMENU.BAT and the temporary batch file on
  288.                     some network drive that is visible when not
  289.                     logged into the server, such as the \LOGIN
  290.                     directory.
  291.  
  292. Differences from Novell
  293.  
  294.      Menu x,y positioning parameter order:
  295.           Novell menu orders the menu placement parameters as
  296.           %menu,Y,X and they are offset from the center of the
  297.           menu.  DougMenu uses an X,Y arrangement instead, and
  298.           coordinates determine the offset for the upper left
  299.           corner of the menus.
  300.      String Input
  301.           The Novell menu's system of string input was limited. 
  302.           DougMenu uses the "#ask" command.
  303.      !LOGOUT
  304.           Novell menu uses "!logout" to log a user out of the
  305.           server and exit the program.  It can be replaced with
  306.           "#logout" followed by "#exit" or "#reboot".
  307.  
  308. POSITIONING MENUS & CHOOSING MENU COLORS.
  309.  
  310.      %MenuTitle [,<x_position>,<y_position>,<palette_number>]
  311.  
  312.      Parameters can be used after a menu title to change the
  313.      location and the color palette used when displaying a menu
  314.      window.  These parameters are offset from the menu title with
  315.      commas.  To center a menu window with respect to an axis, use
  316.      255 as the placement value.  DougMenu will reposition menu
  317.      windows so that they do not cover the header box and are not
  318.      off the screen.
  319.  
  320.      DougMenu has 10 palettes numbered 0 through 9.  These palettes
  321.      can be redefined with the special external command '#palette'. 
  322.      Palettes 8 and 9 are used for monochrome displays.  If
  323.      DougMenu is run using a monochrome display, it will use these
  324.      two palette and ignore attempt to change the palette.
  325.  
  326. ADVANCED MENU CUSTOMIZATIONS:
  327.  
  328.      The following section lists the names used in the notation of
  329.      the command listing.
  330.  
  331. <string>       a string of characters that can contain environment
  332.                variables.
  333. <group>        a string that specifically represents a novell user
  334.                group's name
  335. <username>     a string that specifically represents a novell
  336.                user's name
  337. <filename>     a string which is the filename of a dos text file.
  338. <palette_number>    a value between 0-9
  339.  
  340. <foreground_color>  a number from 1 - 15 from the list below.
  341. <background_color>  a number from 0 - 7 from the list below.
  342.  
  343.         0   -   black             8   -   dark grey
  344.         1   -   blue              9   -   lt. blue
  345.         2   -   green             10  -   lt. green
  346.         3   -   cyan              11  -   lt. cyan
  347.         4   -   red               12  -   lt. red
  348.         5   -   magenta           13  -   lt. magenta
  349.         6   -   brown             14  -   yellow
  350.         7   -   lt.grey           15  -   white
  351.  
  352. <key_code>     a number between 0-255 which corresponds to a IBM
  353.                keyboard scan code.
  354.  
  355. <character_code>    a number between 0-255 which corresponds to an
  356.                     IBM screen display code.
  357.  
  358. <X_Position>   a number between 0-255 which will determine the
  359.                horizontal position of the upper left corner of a
  360.                DougMenu window.  If it is 255, the window will be
  361.                centered.
  362. <X_Vector>     a number between 0-255 which will determine how far
  363.                a way the next default window will be located from
  364.                the currently opened window. PARSING COMMANDS:
  365.  
  366.      These commands affect the way that DOUGMENU.EXE reads in the
  367.      menu script when DougMenu is used.  The action of these
  368.      commands depends on their placement within the script.
  369.  
  370. ;comments
  371.           Any text following after a semicolon on one line that is
  372.           not in quotations will be treated as a comment and
  373.           ignored by the parser.  This can cause trouble with the
  374.           dos "path" and "assign" commands.  Use the two following
  375.           commands as a work-around.
  376. #nocomments
  377.           Normally, any characters after a semi-colon in a line
  378.           will be ignored.  Once this command is parsed, semicolons
  379.           will be treated as normal text and not used a comments.
  380. #comments
  381.           This command restores the default behavior of semicolons.
  382. #if <string> [!][=] [<string>]
  383.      three usages:
  384.           #if <string> == <string>
  385.                The parser will continue parsing the menu script if
  386.                the two strings are identical after all environment
  387.                variables are resolved.  Otherwise all text will be
  388.                skipped until the corresponding #endif is found.
  389.           #if <string> != <string>
  390.                As above except the parser will continue parsing
  391.                only if the two string are not equal after the
  392.                environment variables are resolved.
  393.           #if <string>
  394.                Will continue parsing the menu script if the string
  395.                contains any text after all of the environment
  396.                variables are resolved.  Otherwise the parser will
  397.                skip to the corresponding #endif.
  398.      All of these conditions are evaluated as the script is being
  399.      read.  No DougMenu variables created with the #ask command can
  400.      be used.  "#If" statements can be nested up to 255 levels
  401.      deep.
  402. #if_member [!]<group>
  403.           The parser will continue parsing the menu script if the
  404.           computer is currently logged into a novell server as a
  405.           user who is a member of the specified group.  Otherwise
  406.           all text will be skipped until the corresponding #endif
  407.           is found.  An exclamation point will make the parser
  408.           continue only if the user is not in the group.
  409. #if_username [!]<username>
  410.           The parser will continue parsing the menu script if the
  411.           computer is currently logged into a novell server as the
  412.           user whose name is specified by the username string. 
  413.           Otherwise all text will be skipped until the
  414.           corresponding #endif is found.  An exclamation point will
  415.           cause the parser to continue only if the user is not
  416.           logged in under the specified name.
  417. #endif
  418.           This is used to end an #if statement.  If it is
  419.           unnecessary, it will be ignored.
  420. #else
  421.           If the last #if statement failed, this will allow parsing
  422.           to continue from this point on.  If the last #if
  423.           statement passed, then this will make the parser stop
  424.           parsing the script until the next #endif statement is
  425.           found.
  426. #include = <filename>[.mnu]
  427.           Causes the text of the specified file to be parsed at
  428.           this point as if it were part of the primary script. 
  429.           Once the text of the included file is parsed, the parsing
  430.           of the original file will continue.  This command can be
  431.           nested, but do not nest scripts more than five levels
  432.           deep.  If the file name can't be found, Dougmenu will
  433.           look for the file with a ".mnu" extension.  If the file
  434.           still cannot be found an error message will be generated. 
  435.           In order to maintain compatibility with past versions of
  436.           DougMenu, an '=' must be used here.
  437. #include_if_exist = <filename>[.mnu]
  438.           As above accept no error message will be generated if the
  439.           file cannot be found.
  440. #default placement = <X_Position>,<Y_Position>
  441.           This option sets the default placement of the upper left
  442.           corner of all menus parsed after this statement.  A
  443.           position value of 255 will cause windows to be centered
  444.           with respect to the corresponding axis.  Place this at
  445.           the top of a script to affect all menu structures.
  446. #default palette = <palette_number>
  447.           The palette number changes the default palette for any
  448.           menu structures parsed after this point in the script. 
  449.           This statement will be ignored on computers with
  450.           monochrome display adapters.  Place this at the top of a
  451.           script to affect all menu structures.
  452.  
  453.  
  454. EXTERNAL COMMANDS:
  455.      There are a variety of external commands which can be used to
  456.      customize the DougMenu environment.  The commands are called
  457.      external commands because they are placed outside of the
  458.      normal menu structures.  It is recommended that all external
  459.      commands be placed at the top of the script to avoid
  460.      confusion, although they can be placed in between menu
  461.      structures.
  462.  
  463. #display[,<x_position>,<y_position>,<palette_number>]
  464.   "Text to be displayed"
  465.   "Text to be displayed"
  466.   "Text to be displayed"
  467.           This will display a text box on top of the backdrop but
  468.           behind the first menu window.  Once displayed, boxes
  469.           created with this command are inert.  The display box
  470.           will size itself according to the longest line of text. 
  471.           Environment variables can be in the text.  DougMenu
  472.           Variables cannot be used in these external structures.
  473. #f<number> = <string>
  474.           Define an action for a function key.  The number is the
  475.           number of the function key ( 1-10 ) and the string
  476.           afterwards will be its title when it is displayed on the
  477.           footer bar.  The footer bar is not displayed if no
  478.           function keys are assigned actions with this command. 
  479.           This command should be followed with lines of indented
  480.           text which will be executed if the function key is
  481.           pressed while the menu screen is displayed.
  482. #key <key_code>,[<key_code>]
  483.           Define an action for a key.  The key codes refer to the
  484.           dos key codes for the key that is to be assigned an
  485.           action.  If the code is 0, it should be followed by
  486.           another number which corresponds to an extended key code. 
  487.           This structure should be followed by indented text which
  488.           will determine the action of this hot key.
  489. #timer [= <minutes>]
  490.           Create an action that will occur should there be no user
  491.           input for a given amount of time while DOUGMENU.EXE is
  492.           running.  The default time is 10 minutes if no time is
  493.           specified in the script.  If this structure is followed
  494.           by lines of indented text, those lines will determine the
  495.           action that will be taken if there is no user input for
  496.           the specified amount of time while the menu is displayed. 
  497.           If this structure is not followed by lines of indented
  498.           text, DougMenu will automatically enter a screen saver
  499.           mode when the timer expires.  The screen will be blanked
  500.           and the time and date will be moved around the screen at
  501.           one minute intervals.
  502. #saver message = <string>
  503.           The string that is specified in this statement will
  504.           replace the time and date for the built in screen saver.
  505. #header message = <string>
  506.           The string in this statement will replace the DougMenu
  507.           version in the header box.
  508. #header palette = <palette_number>
  509.           The palette number changes the selected palette for the
  510.           header box.  The default header palette is 1.  This
  511.           statement will be ignored on computers with monochrome
  512.           display adapters.
  513. #error palette = <palette_number>
  514.           The palette number changes the default palette for any
  515.           error boxes.  The default error palette is 2.  This
  516.           statement will be ignored on computers with monochrome
  517.           display adapters.
  518. #message palette = <palette_number>
  519.           The palette number changes the default palette for
  520.           message boxes created by the #display command or any
  521.           other non-error related message boxes.  The default
  522.           message palette is 3.  This statement will be ignored on
  523.           computers with monochrome display adapters.
  524. #footer color = <background_color>,<foreground_color>
  525.           These two colors change the foreground and background of
  526.           the footer line at the bottom of the screen.  This footer
  527.           line will only be displayed if function keys are assigned
  528.           with the "#f<number>" commands.
  529. #footer highlight = <background_color>,<foreground_color>
  530.           These two colors define the color of an item on the
  531.           footer bar if it is highlighted due by the mouse cursor. 
  532.           This footer line will only be displayed if function keys
  533.           are assigned with the "#f<number>" commands.
  534. #shadow [= <background_color>,<foreground_color>]
  535.           This command will cause the active window on the screen
  536.           to have a shadow on the right and bottom side.  The
  537.           optional color parameters can be used to change the color
  538.           of the shadow.  The default color for the shadow is grey
  539.           on black.
  540. #backdrop color = <background_color>,<foreground_color>
  541.           This command can be used to change the color of the
  542.           backdrop characters.
  543. #backdrop char = <character_code>
  544.           This command can be used to change the character that is
  545.           displayed in the backdrop.  Try using a value of 1 for an
  546.           interesting effect.
  547. #backdrop file = <filename>
  548.           This command can be used to display an ascii or ansi text
  549.           file as a background.
  550.  
  551. #palette <palette_number> = 
  552.       Menu  Text  Title  Border  Highlighted  Selected  Selected 
  553.       BG  , FG  , FG   , FG    , Border FG  , Item BG , Item FG
  554.           This is used to generate custom color palettes.  The
  555.           seven colors are entered as numbers according to the
  556.           color chart.  The values must be placed on the same line
  557.           as the #palette statement.
  558. #cascade [= <X_vector>,<Y_vector>]
  559.           This changes the default placement to 10,5 and causes all
  560.           menus to be 'stair stepped' or cascaded down from that
  561.           location.  The x_vector and y_vector determine how far
  562.           each window will be offset from the previous menu window. 
  563.           The default vector is 4,1.  This command can be followed
  564.           by "#default placement" to change the default position
  565.           from 10,5.
  566. #noexit
  567.           Prevents exiting the menu system via the escape key.
  568. #quickselect
  569.           Causes the items in menu windows to be displayed in an
  570.           enumerated fashion.  The items in windows can then be
  571.           selected and executed by pressing the number which
  572.           corresponds to the item.
  573. #noreturn
  574.           Normally, after an action which requires a batch file is
  575.           executed, the menu script is parsed again and all windows
  576.           that were open when the item was executed are reopened. 
  577.           This command prevents the reopening of windows when the
  578.           computer returns to the menu program and the user is left
  579.           at the root menu.
  580. #notime
  581.           Prevents the time and date from being displayed in the
  582.           header box.  The time and date will still be used in the
  583.           default screen saver message.
  584.  
  585.  
  586. SPECIAL EXECUTION COMMANDS:
  587.      The following commands are used only within the executable
  588.      text of an option, and so cannot have the '#' flush against
  589.      the left margin but instead be indented with spaces or tabs.
  590.      The Point of No Return:
  591.           When executing an option from a DougMenu menu script,
  592.           there is a certain point at which the parsing of the
  593.           executable text changes.  At this point, DougMenu decides
  594.           whether or not it is necessary to make a temporary batch
  595.           file.  Once the parser decides to make a temporary batch
  596.           file, all special execution commands will be ignored and
  597.           dumped into the batch file as straight text except for
  598.           the #if commands and the #exit command.  This means that
  599.           you cannot execute a dos command such as "dir", and then
  600.           open a query box.  Once a dos command is seen, this point
  601.           has been reached.
  602.      DougMenu Variables and Environment variables:
  603.           These can only be used in the execution portion of a
  604.           script or in some special external commands.  This means
  605.           that you cannot use an environment variable to name a
  606.           menu, while you can use them for a screen saver message
  607.           or for a #display box.  DougMenu variables can be used
  608.           just like environment variables.  Place the name inside
  609.           '%' characters, and the value of the variable will be
  610.           substituted in place of the name and the encapsulating
  611.           '%'.  Up to 10 DougMenu variables can be assigned in the
  612.           course of one option's executable text.
  613.  
  614. #if <string> [!][=] [<string>]
  615. #if_member [!]<group>
  616. #if_username [!]<username>
  617. #endif
  618. #else
  619.           All of these function work when indented in executable
  620.           but instead of controlling the parsing of the menu
  621.           script, they control what statements get executed, or
  622.           once the temporary batch file has begun being written,
  623.           they control what is written to the temporary batch file. 
  624.           Also, these #if statement can use DougMenu variables
  625.           created in the same option's indented executable text.
  626. #display[,<x_position>,<y_position>,<palette_number>]
  627.   "Text to be displayed"
  628.   "Text to be displayed"
  629.   "Text to be displayed"
  630.           This will display a text box when executed.  Execution
  631.           will pause at this point until a key is struck.  If
  632.           escape or the right mouse button is pressed, execution
  633.           will stop at this command and the user will go back to
  634.           the menu window.  If any other key is pressed, the
  635.           execution continues normally.  The window will size
  636.           itself according to the longest line of text.  DougMenu
  637.           Variables and Environment variables can be used in the
  638.           text.
  639. #ask <variable_name>,<string>,[,<x_pos>,<y_pos>,<palette_number>]
  640.   "regular option with string assignment"= stuff
  641.   "regular option with empty assignment"=
  642.   "a non-selectable subtitle"
  643.           Creates a window which resembles a menu window.  The
  644.           string will be the window's title.  The text in quotes
  645.           will be the options.  When the user chooses an option,
  646.           the text after the equal sign for the selected option
  647.           will be assigned to the DougMenu variable which is names
  648.           in the top line.  DougMenu variables and Environment
  649.           variables can be used in the title or options in the
  650.           query window.  Any DougMenu variables that are assigned
  651.           with this statement only hold their values during the
  652.           execution of this statement.  If a DougMenu variable is
  653.           assigned and then following this a new menu window is
  654.           opened, the value will be lost.  Up to 10 DougMenu
  655.           variables can be assigned in the course of one option's
  656.           executable text.
  657. #ask <variable_name>,<string>[,<x_pos>,<y_pos>,<palette_number>]
  658.           Creates a window which prompts the user to input a text
  659.           string.  The string will be the title of the window.  The
  660.           text received in this window will be assigned to the
  661.           variable name.  DougMenu variables and Environment
  662.           variables can be used in the title.  Any DougMenu
  663.           variables that are assigned with this statement only hold
  664.           their values during the execution of this statement.  If
  665.           a DougMenu variable is assigned and then following this
  666.           a new menu window is opened, the value will be lost.  Up
  667.           to 10 DougMenu variables can be assigned in the course of
  668.           one option's executable text.
  669. #floppy <variable_name>
  670.           Searches through all floppy drives to find one with a
  671.           formatted disk in it.  The drive letter with a colon will
  672.           by placed in the DougMenu variable.
  673. #space <drive> <number>
  674.           Checks a specified drive for a specified number of free
  675.           bytes in K.  So a value of 10 would mean to check for 10k
  676.           free.  If there is sufficient free space, the execution
  677.           will continue past this command.  If it is not, the user
  678.           is informed of the lack of drive space and returned to
  679.           the menu.  If there is an error accessing the drive, this
  680.           statement will always fail.
  681. #password <string>
  682.           The user is requested to enter a password.  If the
  683.           password is incorrect, the user is informed and returned
  684.           to the menu.  If it is correct, the execution of the item
  685.           continues.  Do not put in an equal sign.
  686. #exit
  687.           When this command is encountered, either the user is
  688.           returned to DOS, or all batch file commands before this
  689.           point are executed and then the user is returned to DOS.
  690. #logout
  691.           The user is logged out of all novell servers.  This will
  692.           not exit users from the menu.  Execution will continue
  693.           after this command.
  694. #reboot
  695.           This will immediately reboot the computer without
  696.           creating a batch file.
  697.